<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gradients Canvas 渐变画布</title>
</head>

<body>
    <!-- 定义Canvas画布 -->
    <canvas id="myCanvas" width="600" height="300" style="border: 1px solid black"></canvas>
    <script>
        // 访问Canvas画布元素
        var canvas = document.getElementById("myCanvas");
        var ctx = canvas.getContext("2d");
        // 1.线性渐变（Page 6.14）
        // 创建线性渐变对象 createLinearGradient(x0,y0,x1,y1)；参数x0指定起点的x坐标，参数y0指定起点的y坐标，参数x1指定终点的x坐标，参数y1指定终点的y坐标
        var grad1 = ctx.createLinearGradient(0, 0, 170, 0);
        // addColorStop 指定渐变对象的不同颜色
        grad1.addColorStop(0, "blue");
        grad1.addColorStop(0.5, "yellow");
        grad1.addColorStop(1, "red");
        ctx.fillStyle = grad1;
        // 给渐变对象填充样式
        ctx.fillRect(20, 20, 180, 180);

        // 2.圆形渐变（Page 6.15）
        // 创建圆形渐变对象 createRadialGradient(x0,y0,r0,x1,y1,r1)；参数x0指定起点的x坐标，参数y0指定起点的y坐标，参数r0指定起始圆的半径，参数x1指定终点的x坐标，参数y1指定终点的y坐标，参数r1指定结束圆的半径
        var grad2 = ctx.createRadialGradient(300, 100, 5, 310, 120, 100);
        grad2.addColorStop(0, "blue");
        grad2.addColorStop(0.5, "yellow");
        grad2.addColorStop(1, "red");
        ctx.fillStyle = grad2;
        ctx.fillRect(240, 20, 180, 180);
    </script>
</body>

</html>